package com.xoa.service.hr;

import com.xoa.model.hr.HrStaffContract;
import com.xoa.model.users.Users;
import com.xoa.util.ToJson;
import com.xoa.util.common.wrapper.BaseWrapper;
import com.xoa.util.common.wrapper.BaseWrappers;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.List;

/**
 *    创建作者:      高亚峰
 *    创建日期：     2017-07-13 17:07
 *    类介绍：       和同类
 *    构造参数：     无
 *
 */
public interface HrStaffContractService {
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月13日 下午16:40:41
     * 方法介绍:   查询和同详情
     * 参数说明:   ContractId 合同自动递增Id
     * @return    HrStaffContract
     */
    public ToJson<HrStaffContract> getcontractinfo(HttpServletRequest request,String contractId);
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月13日 下午17:23:41
     * 方法介绍:   合同信息修改
     * 参数说明:   HrStaffContract 参数
     * @return    ToJson
     */
    public ToJson<Object> updateContractInfo(HttpServletRequest request,HrStaffContract hrStaffContract,String userPriv);
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月13日 下午18:04:41
     * 方法介绍:   删除合同信息接口
     * 参数说明:    ContractId 合同自动递增Id
     * @return    ToJson
     */
    public ToJson<Object> deleteContractInfo(String contractId);


    //批量导出
    public ToJson<Object> piliangExport(HttpServletRequest request, HttpServletResponse response,String contractId,HrStaffContract hrStaffContract,String SignstartTime,String SignendTime,String TrialstartTime,String TrialendTime,String MaturitystartTime,String MaturityendTime,String RelievestartTime,String RelieveendTime);
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 上午10:28:04
     * 方法介绍:   查询合同列表接口
     * 参数说明:    分页
     * @return    HrStaffContract
     */
    public ToJson<HrStaffContract> getAllContract(Integer page,Integer pageSize,boolean useFlag,String userId);
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 上午10:53:04
     * 方法介绍:   合同管理新建接口
     * 参数说明:   HrStaffContract
     * @return    ToJson
     */
    public ToJson<Object> addContract(HttpServletRequest request, HrStaffContract hrStaffContract, String userPriv);
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 下午15:24:04
     * 方法介绍:   查询试用到期的合同
     * 参数说明:   startTime 到期开始时间
     * 参数说明:   endTime 到期结束时间
     * @return    ToJson
     */
    public ToJson<HrStaffContract> getTrialContract(String startTime,String endTime);
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 下午16:24:04
     * 方法介绍:   查询合同到期的合同
     * 参数说明:   startTime 到期开始时间
     * 参数说明:   endTime 到期结束时间
     * 参数说明：   hrStaffContract
     * @return    ToJson
     */
   public ToJson<HrStaffContract> getMaturityContract(HrStaffContract hrStaffContract, String startTime, String endTime);

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017年7月14日 下午17:50:04
     * 方法介绍:   合同查询接口
     * 参数说明:   SignstartTime 签约开始时间
     * 参数说明:   SignendTime 到期结束时间
     * 参数说明:   TrialstartTime 试用到期开始时间
     * 参数说明:   TrialendTime 试用到期结束时间
     * 参数说明:   MaturitystartTime 合同到期开始时间
     * 参数说明:   MaturityendTime 合同到期结束时间
     * 参数说明:   RelievestartTime 合同解除开始时间
     * 参数说明:   RelieveendTime 合同解除结束时间
     * 参数说明：   hrStaffContract
     * @return    ToJson
     */
    public ToJson<HrStaffContract> getContract(HrStaffContract hrStaffContract,String SignstartTime,String SignendTime,String TrialstartTime,String TrialendTime,String MaturitystartTime,String MaturityendTime,String RelievestartTime,String RelieveendTime,Integer page,Integer pageSize,boolean useFlag);

    /**
     * @作者：张航宁
     * @时间：2017/7/25
     * @介绍：批量删除接口
     * @参数：ids
     */
    public ToJson<HrStaffContract> deleteByIds(String ids);

    public BaseWrapper getContractAnalysis();

    /**
     * 创建作者:   季佳伟
     * 创建日期:   2017年11月17日 上午11:30:41
     * 方法介绍:   查询登录人的合同
     * 参数说明:   ContractId
     * @return    HrStaffContract
     */
    public ToJson<HrStaffContract> getContractInfoByStaffName(Users user);
    BaseWrapper getHrCountByType();

    /**
     * 创建者：戚中校
     * 方法作用：根据条件查询数量
     * @param
     * @param deptId(传入的多个部门的编号)
     * @return 返回的json字符串中  nums是返回的结果的数量
     *
     */
    public ToJson<HrStaffContract> selectNumByCon(HrStaffContract record, Integer[] deptId);
    /**
     * 李阳
     * 2018.8.3
     * 根据staffName 查找合同
     * @param staffName
     * @return
     */
    public ToJson<HrStaffContract> getContract(String staffName, Integer page, Integer pageSize, boolean useFlag);

    public ToJson imporController(MultipartFile file, HttpServletRequest request, HttpServletResponse response, HttpSession session);


}
